﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FastDATA;

namespace CursoUNICEUB
{
    public partial class Oportunidades : System.Web.UI.Page
    {
        private List<DEOportunidade> listaOportunidades;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaOportunidades();
                carregaCargo();

                if (Session["aluno"] != null)
                {
                    DEAluno aluno = (DEAluno)Session["aluno"];
                    if (aluno.Administrador)
                        hylInserirOportunidade.Visible = true;
                }
            }
        }

        private void carregaOportunidades()
        {
            try
            {
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    var q = from e in banco.DEOportunidades
                            where e.Ativo
                            orderby e.Data descending
                            select e;

                    listaOportunidades = q.ToList();

                    if (listaOportunidades == null || listaOportunidades.Count == 0)
                        Util.showMessage(this, "Não foi encontrada nenhuma oportunidade");
                    else
                    {
                        this.grvOportunidades.DataSource = listaOportunidades;
                        this.grvOportunidades.DataBind();
                    }
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um erro no momento de carregar as oportunidades");
            }
        }

        void carregaCargo()
        {
            try
            {
                List<DECargo> cargos = null;
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    var q = from e in banco.DECargos
                            orderby e.Descricao
                            select e;

                    cargos = q.ToList();

                    cargos.Insert(0, new DECargo() { Codigo = 0, Descricao = "Selecione" });
                    this.ddlCargo.DataSource = cargos;
                    this.ddlCargo.DataBind();
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Erro ao carregar os cargos. Tente mais tarde ou ligue para 8592-4439.");
            }
        }


        protected string getNomeEmpresa(GridViewRow row)
        {
            try
            {
                if (Session["aluno"] == null)
                    return "Apenas para alunos";
                else
                    return DataBinder.Eval(row.DataItem, "NomeEmpresa").ToString();
            }
            catch (Exception)
            {
                return "Não disponível";
            }
        }

        protected string getSalario(GridViewRow row)
        {
            try
            {
                if (DataBinder.Eval(row.DataItem, "SalarioInicial") == null && DataBinder.Eval(row.DataItem, "SalarioFinal") == null)
                    return "A combinar";
                else
                {
                    if (DataBinder.Eval(row.DataItem, "SalarioFinal") == null)
                    {
                        string salarioInicial = DataBinder.Eval(row.DataItem, "SalarioInicial").ToString();
                        
                        return Convert.ToDecimal(salarioInicial).ToString("N2");
                    }
                    else
                    {
                        string salarioInicial = DataBinder.Eval(row.DataItem, "SalarioInicial").ToString();
                        string salarioFinal = DataBinder.Eval(row.DataItem, "SalarioFinal").ToString();

                        return Convert.ToDecimal(salarioInicial).ToString("N2") + " - " + Convert.ToDecimal(salarioFinal).ToString("N2");
                    }
                }
            }
            catch (Exception)
            {
                return "Não disponível";
            }
        }

        protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                List<DEOportunidade> oportunidades = new List<DEOportunidade>();
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    var q = from t in banco.DEOportunidades
                            where t.Ativo &&
                                  (this.ddlCargo.SelectedValue == "0" || t.CodigoCargo.Equals(Convert.ToInt32(this.ddlCargo.SelectedValue))) &&
                                  (String.IsNullOrEmpty(this.txtBusca.Text) || t.Titulo.Contains(this.txtBusca.Text) || t.Descricao.Contains(this.txtBusca.Text))
                            orderby t.Data descending
                            select t;

                    oportunidades = q.ToList();

                    this.grvOportunidades.DataSource = oportunidades;
                    this.grvOportunidades.DataBind();
                }

                if (oportunidades.Count == 0)
                    Util.showMessage(this, "Não foi encontrado nenhuma oportunidade.");
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um erro ao pesquisar as oportunidades. Por favor entre em contato : contato@cursodotnet.com.br.");
            }
        }
    }
}
